package br.com.rotaestatistica.daos;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.rotaestatistica.entities.UsuarioCadastrado_TrajetoEntity;
import br.com.rotaestatistica.utils.FabricaDeConexao;

public class UsuarioCadastrado_TrajetoDAO extends FactoryDAO {


	public List<UsuarioCadastrado_TrajetoEntity> selectAllUsuarioCadastrado_TrajetoAsList() {
		List<UsuarioCadastrado_TrajetoEntity> list = new ArrayList<UsuarioCadastrado_TrajetoEntity>();
		PreparedStatement pstm = null;
		ResultSet rs = null;

		String SQL = "SELECT * FROM UsuarioCadastrado_Trajeto";

		try {
			pstm = FabricaDeConexao.getConexao().prepareStatement(SQL);

			rs = pstm.executeQuery();
			while (rs.next()) {
				UsuarioCadastrado_TrajetoEntity uct = new UsuarioCadastrado_TrajetoEntity();
				uct.setId_Trajeto(rs.getLong("id_trajeto"));
				uct.setId_Usuario(rs.getLong("id_usuario"));			

				list.add(uct);
			}
			return list;
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		} finally {
			try {
				rs.close();
				pstm.close();
				FabricaDeConexao.fechaConexao();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	public List<UsuarioCadastrado_TrajetoEntity> selectUsuarioCadastrado_TrajetoByIdUsuario(
			long id_usuario) {
		List<UsuarioCadastrado_TrajetoEntity> lista_uct = new ArrayList<UsuarioCadastrado_TrajetoEntity>();
		PreparedStatement pstm = null;
		ResultSet rs = null;

		String SQL = "SELECT * FROM UsuarioCadastrado_Trajeto WHERE id_usuario = ?";

		try {
			pstm = FabricaDeConexao.getConexao().prepareStatement(SQL);
			pstm.setLong(1, id_usuario);
			rs = pstm.executeQuery();
			while (rs.next()) {
				UsuarioCadastrado_TrajetoEntity uct = new UsuarioCadastrado_TrajetoEntity();
				uct.setId_Trajeto(rs.getLong("id_trajeto"));
				uct.setId_Usuario(rs.getLong("id_usuario"));
			}
			return lista_uct;
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		} finally {
			try {
				rs.close();
				pstm.close();
				FabricaDeConexao.fechaConexao();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

	public boolean insertUsuarioCadastrado_Trajeto(UsuarioCadastrado_TrajetoEntity usuarioCadastrado_Trajeto) {
		PreparedStatement pstm = null;

		String SQL = "INSERT INTO UsuarioCadastrado_Trajeto(id_usuario, id_trajeto) VALUES (?,?)";

		try {
			pstm = FabricaDeConexao.getConexao().prepareStatement(SQL);
			pstm.setLong(1, usuarioCadastrado_Trajeto.getId_Usuario());
			pstm.setLong(2, usuarioCadastrado_Trajeto.getId_Trajeto());

			pstm.executeQuery(); // stm.executeUpdate(SQL)

			return true;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		} finally {
			try {
				pstm.close();
				FabricaDeConexao.fechaConexao();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	public boolean deleteUsuarioCadastrado_TrajetoById(long id_usuario, long id_trajeto) {
		PreparedStatement pstm = null;

		String SQL = "DELETE FROM UsuarioCadastrado_Trajeto WHERE id_usuario=? AND id_trajeto=?";

		try {
			pstm = FabricaDeConexao.getConexao().prepareStatement(SQL);
			pstm.setLong(1, id_usuario);
			pstm.setLong(2, id_trajeto);
			
			pstm.executeQuery();

			return true;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		} finally {
			try {
				pstm.close();
				FabricaDeConexao.fechaConexao();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	/*public boolean updateUsuarioCadastrado_Trajeto(
			UsuarioCadastrado_TrajetoEntity usuarioCadastrado_Trajeto) {

	}*/
	
}
